home *** CD-ROM | disk | FTP | other *** search
- ------------------------------------------------
- | BC-FORTRAN77 Vers.1.3C |
- | Copyright: Andre Koestli |
- | 1990 Martin-Luther-Str.63 |
- | D7000 Stuttgart 50 |
- |----------------------------------------------|
- | Die Version "C" von BC-FORTRAN77, bestehend |
- | aus den nachfolgend beschriebenen 5 Dateien, |
- | ist vollstaendig von mir programmiert. Ich |
- | gestatte freies Nutzungsrecht an Vers.C fuer |
- | nichtkommerzielle Anwendungen, alle Rechte |
- | bleiben jedoch bei mir, insbesondere ist der |
- | Verkauf der Vers.C, auch im Zusammenhang mit |
- | anderen Produkten, nicht erlaubt. Jeder Ko- |
- | pie ist dieser Text unveraendert beizufuegen.|
- | Fuer kommerzielle Anwendungen ist die Vers.P |
- | vorgesehen, die lizenzpflichtig ist. |
- | Die Anwendung fuer militaerische Zwecke oder |
- | entsprechende Forschung ist verboten! |
- | Maerz 1990 A.Koestli |
- ------------------------------------------------
-
-
- BC-FORTRAN77 Version C ist Teil eines umfangreichen
- Entwicklungssystems, der Vers.P (siehe unten). Vers.C
- soll in einfacher Weise den fuer Programmierkurse noetigen
- Compiler zur Verfuegung stellen. Dem kommt entgegen, dass
- diese Software fast identisch auf AMIGA, ATARI ST und
- MS-DOS Rechnern laeuft.
-
-
- BC-FORTRAN77 Vers.P
- -------------------
-
- BC-FORTRAN77 Vers.P ist ein umfangreiches Entwicklungs-
- system, das ausser Compiler und Linker auch noch Editor,
- Precompiler und Versionsverwaltung unter einer Benutzer-
- oberflaeche vereinigt. Dabei wird dafuer gesorgt, dass im
- Entwicklungszyklus automatisch nur die jeweils veraen-
- derten Unterprogramme neu uebersetzt werden; selbst bei
- Programmen mit mehreren hundert Unterprogrammen ergibt
- sich so ein Entwicklungsschritt (Editieren, uebersetzen,
- linken und starten) von wenigen Sekunden. Mathematische
- Koprozessoren werden in Vers.P unterstuetzt, ebenso wie
- spezielle Befehle des 68020 Prozessors.
-
- Vers.P enthaelt einen komfortablen Debugger auf Quelltext
- Basis zum interaktiven Austesten sowie einige Biblio-
- theken z.B. zur einfachen Plotausgabe auf dem Bildschirm.
-
- Inklusive 150 Seiten Handbuch kostet BC-FORTRAN77 Vers.P
- DM 350.- und kann bei der oben angegebenen Adresse
- bestellt werden. (Bitte AMIGA oder ATARI ST angeben. Fuer
- MS-DOS existiert Vers.P derzeit nicht.)
-
-
-
- BC-FORTRAN77 Vers.C
- -------------------
-
- BC-FORTRAN77 Vers.C, auf die sich der Rest dieses Textes
- bezieht, besteht aus folgenden Dateien:
-
- LIES.TXT Dieser Text
- BCF.TTP Compiler
- BCL.TTP Linker
- BCRTSY.B Laufzeitsystem
- MATHLIB.B Bibliothek mit Standardfunktionen
-
- Wird eine Kopie angefertigt, muessen immer alle Dateien
- unveraendert uebernommen werden.
-
- Am besten arbeitet man mit einer Command-Shell. Falls
- keine Shell vorhanden ist koennen die Programme aber auch
- vom Desktop gestartet werden, die Optionen und
- Dateinamen muessen dann in ein Window eingegeben werden,
- das nach dem anklicken des Programms erscheint.
-
-
-
- Installation.
- -------------
-
- Die einfachste Arbeitsweise ergibt sich, wenn nur in
- einem Directory gearbeitet wird, in dem dann alle
- Dateien von BC-FORTRAN77 stehen.
-
- Sollen mehrere Directories verwendet werden, so kopiert
- man BCF.TTP und BCL.TTP in ein Directory, in dem die
- Shell nach Programmen sucht. BCRTSY.B und MATHLIB.B
- sollten in das Directory \BC des aktuellen Laufwerks
- kopiert werden, damit sie vom Linker gefunden werden.
-
-
-
- Compiler
- --------
-
- Der Compiler wird gestartet mit
-
- BCF [-Option...] Datei...
-
- oder vom Desktop durch anklicken von BCF.TTP und
- anschliessender Eingabe von Optionen und Dateinamen.
-
- Enthaelt Datei keinen Punkt, so wird .F angehaengt.
- Die uebersetzte Form der Programme wird in Datei.B
- abgelegt.
-
- Beispiel:
-
- BCF -D TEST.F
-
- Uebersetzt TEST.F mit Debug-Option nach TEST.B
-
- BCF TEST SUB
-
- Uebersetzt TEST.F nach TEST.B und SUB.F nach SUB.B
-
- BCF TEST.X
-
- uebersetzt TEST.X nach TEST.B
-
-
- Compiler Optionen
- -----------------
-
- -D Debug, fasst -BVL zusammen.
-
- -B deBugcode, impliziert -H und erzeugt
- ausserdem Code fuer Debuggeraufrufe,
- zum Ueberpruefen von Feldgrenzen und
- Substrings.
-
- -H parcHeck, Code zum Ueberpruefen der Parameter-
- listen und auf Stackueberlauf erzeugen.
-
- -V Varlist: Variablenliste fuer Debugger.
-
- -L Lineslist: Zeilennummernliste fuer Debugger.
-
- -U Uppercase: Klein- in Grossbuchstaben wandeln
- (ausser in Characterkonstanten und
- Formaten). Fehlt diese Option, so sind
- xy, XY, Xy und xY vier verschiedene
- Variablen!
-
- -F Freeinput: Quellprogramm nicht im FORTRAN
- Format. Nichtstandart!
-
- -P Protokoll: Ausgabe der uebersetzten Zeilen.
-
- -W Am Ende auf Return warten, sinnvoll, wenn
- vom Desktop gestartet wird.
-
-
- Sprachumfang
- ------------
-
- BC-FORTRAN77 uebersetzt den vollstaendigen Standard nach
- ANSI/ISO. Der Sprachstandard wird allerdings durch
- einige Besonderheiten verletzt (meistens werden diese
- als Erweiterungen bezeichnet). Ich empfehle dringend,
- diese Dialektkonstrukte nicht zu verwenden, da sie nicht
- standardisiert und damit nicht genau definiert sind.
-
- Die wichtigsten dieser Besonderheiten:
-
- INTEGER*1 8 bit INTEGER
- INTEGER*2 16 bit INTEGER
- INTEGER*4 wie INTEGER
- LOGICAL*1 8 bit LOGICAL
- LOGICAL*2 16 bit LOGICAL
- LOGICAL*4 wie LOGICAL
- IMPLICIT NONE abschalten der impliziten Typdef.
- COMMON /%adr/ Absoluter Common, adr ist Konstante
- oder einfache Variable.
- EQUIVALENCE() zwischen Character und anderen Typen
- sowie Mischen im Common.
- Rekursive Unterprogrammaufrufe.
- Namen mit max. 8 Zeichen (Standart: 6).
-
-
- Als wichtigste Beschraenkungen gibt es:
-
- 32kB Code pro Unterprogramm
- 32kB SAVE/DATA pro Unterprogramm oder Blockdata
- 700 Unterprogramme pro Datei
- 500 Verschiedene Commons pro Datei.
-
- Daneben gibt es eine Reihe von Beschraenkungen, die bei
- unvernuenftig grossen Unterprogrammen zu Fehlermeldungen
- fuehren, meistens waere dann aber ohnehin die 32kB Code
- Grenze ueberschritten.
-
-
- Linker
- ------
-
- Der Linker wird gestartet mit:
-
- BCL [-Optionen...] Datei...
-
- oder vom Desktop durch anklicken von BCL.TTP und
- anschliessender Eingabe von Optionen und Dateinamen.
-
-
- Enthaelt Datei keinen Punkt, so wird .B angehaengt.
- Die Programmdatei wird mit dem Namen der ersten Datei,
- aber mit .PRG statt .B, gespeichert. Werden mathe-
- matische Standardfunktionen verwendet, so muss auch die
- Datei MATHLIB.B aufgefuehrt werden. Das Laufzeitsystem
- BCRTSY.B wird automatisch geladen.
-
- Beispiel:
-
- BCL -S16 TEST SUB MATHLIB
-
- oder
-
- BCL -S16 TEST.B SUB.B MATHLIB.B
-
- Linkt die Dateien TEST.B und SUB.B und speichert unter
- TEST.PRG das lauffaehige Programm, das eine Stackgroesse
- von 16kB verwendet.
-
-
- Linker Optionen
- ---------------
-
- -Sn Stackgroesse fuer das zu erzeugende Programm
- wird auf n kB gesetzt. Fehlt diese
- Option, so wird ein sehr grosser Stack
- angenommen. Auf dem Stack werden alle
- lokalen Variablen/Felder einer Unter-
- programmverschachtelung abgelegt.
-
- -O Optimiertes Linken: nirgends aufgerufene
- Unterprogramme werden weggelassen.
-
- -P Protokoll: Liste der Commonbloecke und
- Programmmodule.
-
- -W Am Ende auf Return warten, sinnvoll, wenn
- vom Desktop gestartet wird.
-
-
- Beschraenkungen
- ---------------
-
- Die wichtigste Beschraenkung liegt in der RAM Groesse: die
- zu erzeugende Programmdatei (ohne Commons und Stack)
- kann maximal so gross sein, wie der groesste freie
- Speicherblock nach Laden von BCL. Andererseits kann, bei
- grossen Commons oder Stack, auch ein Programm erzeugt
- werden, dass im vorhandenen RAM nicht gestartet werden
- kann.
-
- Die Anzahl Unterprogramme ist auf 3000, die Anzahl
- Commonbloecke auf 1500 beschraenkt.
-
-
- Laufzeitsystem
- --------------
-
- Das Laufzeitsystem BCRTSY.B enthaelt Routinen, die von
- einem FORTRAN77 Programm benoetigt werden und wird vom
- Linker in jedes Programm eingebunden.
-
- BCRTSY enthaelt:
-
- Arithmetikroutinen:
- 32 bit INTEGER Multiplikation/Division
- REAL Arithmetik
- DOUBLE PRECISION Arithmetik
- Es wird ein eigenes Gleitkommaformat verwendet,
- das mehr auf Geschwindigkeit denn auf
- Genauigkeit ausgerichtet ist.
- REAL: 6 Dezimalstellen, 32 bit
- 1 bit Vorzeichen, 23 bit Mantisse, 8 bit Exp.
- DOUBLE PRECISION: 13 Dezimalstellen, 6 bit
- 1 bit Vorzeichen, 47 bit Mantisse, 16 bit Exp.
- Ein mathematischer Koprozessor wird in Vers.C
- nicht unterstuetzt.
-
- CHARACTER Routinen
-
- I/O Routinen
-
- Debugger:
- Ein einfacher Debugger zur Fehlersuche.
- Nach einem Laufzeitfehler wird von ihm eine
- Fehlermeldung ausgegeben und Eingabe erwartet.
- Der Debugger kann aber auch durch Druecken der
- Alternate Taste aktiviert werden, um den
- Programmlauf zu unterbrechen. Folgende Tasten
- erkennt der Debugger als Kommando:
-
- S Ausgabe des Subroutine-Call Stacks
- Mit Zeilennummern, falls -L Option beim
- Compilieren verwendet wurde.
-
- V Variablen des aktuellen Unterprogramms
- mit aktuellen Inhalten, falls mit -V
- Option uebersetzt wurde.
-
- Z Programm beenden.
-
- Leertaste Weiterrechnen, falls kein Lauf-
- zeitfehler auftrat. Haelt man dabei die
- Alternate Taste gedrueckt, wird ein
- Programmschritt (bis zum naechsten
- Label, Unterprogramm, ELSE, ENDIF, DO)
- ausgefuehrt.
-
-
- Bibliothek
- ----------
-
- MATHLIB.B enthaelt die mathematischen Funktionen im
- vollen vom Standard vorgeschriebenen Umfang.
- Wenn beim Linken Fehlermeldungen wie z.B.
-
- External nicht gefunden: f_SQRT
-
- auftauchen, so muss die MATHLIB.B beim Aufruf von BCL
- mit angegeben werden.
-
-
- Programmstart
- -------------
-
- Eine von BCL erzeugte Programmdatei kann wie jedes
- andere Programm vom Desktop oder einer Shell aus
- gestartet werden.
-
-
- Fehlermeldungen
- ---------------
-
- Die Fehlermeldungen von Compiler, Linker und
- Laufzeitsystem sollten, bis auf die folgende Ausnahme,
- selbsterklaerend sein. Die vollstaendige Auflistung (26
- Seiten im Handbuch der Vers.P) wuerde den Rahmen dieser
- Beschreibung sprengen.
-
- IO-Error: Nummer
- Ein-/Ausgabefehler; kann abgefangen werden,
- indem im IO-Statement der IOSTAT= Parameter
- angegeben wird. Nummer ist derselbe Wert, der
- auch in der IOSTAT Variable zurueckgegeben wird.
-
- Nummer
-
- -1 Dateiende.
- -2 Dateiende inmitten eines Records.
- 1 Dateinummer bereits verwendet (OPEN).
- 2 Zu viele Dateien (OPEN). Max. 32 Dateien.
- 3 Dateiname zu lang (OPEN).Max. 31 Zeichen.
- 5 Dateinummer nicht eroeffnet. Nur die Nummern
- 5 und 6 koennen ohne OPEN verwendet werden.
- 6 Formatiert/unformatiert Widerspruch.
- 7 REC-Parameter fuer Datei mit ACCESS='SEQUENTIAL'
- 8 BACKSPACE, REWIND, ENDFILE fuer diese Datei
- nicht moeglich (AUX: und PRN:).
- 10 Internal I/O nur formatiert.
- 20 INTEGER Ueberlauf bei Eingabe.
- 21 Datenfehler bein Listengesteuerter Eingabe,
- z.B. fehlende Apostroph fuer Zeichenketten.
- 22 Unerwartetes Dateiende.
- 23 Record zu lang.
- 24 Lesefehler bei UNFORMATTED SEQUENTIAL.
- 30 Formatelement und I/O-Listelement passen nicht
- zusammen.
- INTEGER benoetigt ein I-Formatelement,
- REAL, DOUBLE PRECISION (COMPLEX) ein (zwei)
- F-, G-, E- oder D-Formatelemente,
- LOGICAL ein L-Formatelement,
- CHARACTER ein A-Formatelement.
- 31 Formatelement L: T oder F erwartet (Eingabe)
- 32 Formatelement I: unerwartetes Zeichen (Eingabe)
- Leerzeichen, Vorzeichen und Ziffern erlaubt.
- 33 Formatelemente E, F oder D: unerwartetes
- Zeichen (Eingabe).
- Leerzeichen, Vorzeichen, Ziffern,
- Dezimalpunkt, E, e, D oder d (fuer Exponent)
- erlaubt.
- 34 Zu viele ( in Format.
- 35 Zu viele ) in Format.
- 36 Ziffernfolge an unerlaubter Stelle in Format.
- 37 Formatelement nicht erkannt.
- 38 . fehlt in F, E, G oder D Formatelement.
- 39 4Htext oder 'text' in Format fuer READ.
- In FORTRAN66 konnte damit Text in ein Format
- hineingelesen werden; in FORTRAN77 nicht
- mehr erlaubt.
- 40 Exponent zu gross fuer gegebenes Format.
- 42 Formatelement zu lang. Max. Laenge des internen
- Recordpuffers (80 Zeichen).
- 43 Internal I/O, Record zu lang.
- 44 TL, Record zu lang. Ist ein Record laenger als
- der interne Recordpuffer, kann nicht mehr
- nach links tabuliert werden.
- 45 Feldlaenge 0 bei I,L,F,E,G,D Formatelement.
-
- 1000+n TOS Error -n
-
- 1002 Laufwerk nicht bereit.
- 1004 CRC (Cyclic Redundancy Code) Fehler.
- 1010 Schreibfehler.
- 1011 Lesefehler.
- 1013 Schreibgeschuetzt.
- 1014 Diskette gewechselt.
- 1016 Bad Sector.
- 1017 Diskette einlegen.
- 1033 Datei nicht gefunden.
- 1034 Pfadname (zum Verzeichnis) nicht gefunden.
- 1035 Zu viele Dateien.
- 1036 Zugriff nicht moeglich (Schreibschutz?).
- 1039 Nicht genuegend Speicher (RAM).
- 1040 Falsche Speicherblockadresse.
- 1046 Ungueltige Laufwerksbezeichnung. z.B. K:
- Achtung, mit Q: bis Z: stuerzt TOS ab!
- 1066 Falsches Format fuer Programmfile.
-
-
- Probleme
- --------
-
- Sollte jemand der Meinung sein, dass der Compiler,
- Linker oder die Bibliothek fehlerhaft sind, bitte ich um
- schriftliche Mitteilung. Ich bitte um Verstaendnis, dass
- fuer dieses Produkt (im Gegensatz zur kommerziellen
- Version P) Updateservice und telefonische Beratung nicht
- moeglich sind.
-
-